#pragma once

#include "IUnit.h"

enum Weapon {
    WeaponNone,
    WeaponBlaster,
    WeaponRockets
};

enum MoveType {
    MoveTypeNone,
    MoveTypeGo,
    MoveTypeRun
};

class IRobot : public IUnit
{
public:
    virtual bool hasWings() const = 0;
    virtual Weapon weapon() const = 0;
    virtual MoveType moveType() const = 0;

    virtual void setHasWings(bool hasWings) = 0;
    virtual void setWeapon(Weapon weapon) = 0;
    virtual void setMoveType(MoveType moveType) = 0;

    virtual void sayMyName() const = 0;
};

typedef std::shared_ptr<IRobot> IRobotPtr;
typedef std::shared_ptr<const IRobot> IRobotConstPtr;
